package com.hemerasolutions.v2trainer.component.interfaces.search;

import java.util.List;

import com.hemerasolutions.v2trainer.component.interfaces.BaseComponentInterface;
import com.hemerasolutions.v2trainer.component.interfaces.detail.ExerciseDetailsCompInterface;
import com.hemerasolutions.v2trainer.delegate.interfaces.ExerciseSearchDelegateInterface;
import com.hemerasolutions.v2trainer.model.exercise.Exercise;
import com.hemerasolutions.v2trainer.model.exercise.executions.Execution;
import com.hemerasolutions.v2trainer.model.muscle.BodyRegion;
import com.hemerasolutions.v2trainer.model.muscle.Muscle;
import com.hemerasolutions.v2trainer.model.muscle.MuscleGroup;
import com.hemerasolutions.v2trainer.model.training.TrainingType;

public interface ExerciseSearchCompInterface extends BaseComponentInterface {

	public abstract void refresh();

	public abstract void init();

	public abstract void setExerciseDetailsHandler(ExerciseDetailsCompInterface exerciseDetailsHandler);

	public abstract ExerciseDetailsCompInterface getExerciseDetailsHandler();

	public abstract void setSelExercise(Exercise selExercise);

	public abstract Exercise getSelExercise();

	public abstract void setExerciseSearchDelegate(ExerciseSearchDelegateInterface exerciseSearchDelegate);

	public abstract ExerciseSearchDelegateInterface getExerciseSearchDelegate();

	public abstract void setExercise(Exercise exercise);

	public abstract Exercise getExercise();

	public abstract void setFoundExercises(List<Exercise> foundExercises);

	public abstract List<Exercise> getFoundExercises();

	public abstract void setFullBodyRegions(List<BodyRegion> fullBodyRegions);

	public abstract List<BodyRegion> getFullBodyRegions();

	public abstract void setFullMuscleGroups(List<MuscleGroup> fullMuscleGroups);

	public abstract List<MuscleGroup> getFullMuscleGroups();

	public abstract void setFullExecutions(List<Execution> fullExecutions);

	public abstract List<Execution> getFullExecutions();

	public abstract void setFullMuscles(List<Muscle> fullMuscles);

	public abstract List<Muscle> getFullMuscles();

	public abstract void setFindExerciseByMuscles(List<Muscle> findExerciseByMuscles);

	public abstract List<Muscle> getFindExerciseByMuscles();

	public abstract void setFindExerciseByExecutions(List<Execution> findExerciseByExecutions);

	public abstract List<Execution> getFindExerciseByExecutions();

	public abstract void setFindExerciseByMuscleGroups(List<MuscleGroup> findExerciseByMuscleGroups);

	public abstract List<MuscleGroup> getFindExerciseByMuscleGroups();

	public abstract void setFindExerciseByBodyRegions(List<BodyRegion> findExerciseByBodyRegions);

	public abstract List<BodyRegion> getFindExerciseByBodyRegions();

	public abstract void setFindExerciseByTrainingTypes(List<TrainingType> findExerciseByTrainingTypes);

	public abstract List<TrainingType> getFindExerciseByTrainingTypes();

	public abstract void setFindExerciseByTechnical(boolean findExerciseByTechnical);

	public abstract boolean isFindExerciseByTechnical();

	public abstract void setFindExerciseByDescription(String findExerciseByDescription);

	public abstract String getFindExerciseByDescription();

	public abstract void setFindExerciseByName(String findExerciseByName);

	public abstract String getFindExerciseByName();

	public abstract void searchExercises();

	public abstract void addExerciseStep();

	public abstract void changeFullMuscleGroups();

	public abstract void changeFullBodyRegions();

	public abstract void toViewExercise();

	ModalitySearchCompInterface getModalitySearch();

	void setModalitySearch(ModalitySearchCompInterface modalitySearch);

	void toSelectModality();
}
